/**
 * 【同步方法】将数据转化为object类型数据
 * @param data 待转化的数据
 * @return 转化生成的object类型数据
 */
function toObject(data) {
    
    // 初始化返回数据
    let data_return = null;
    
    // 节点数据转换处理方法，参数：objC-要转换处理的对象数据
    function deal_el(objC) {
        // 循环传递进来的objC参数
        for (let k in objC)
        {
            // 节点 - json元素项
            let ele_value = objC[k];
            
            // 如果数据类型为对象
            if (typeof (ele_value) == "object")
            {
                // 准备转换格式节点元素
                let isConver = false;
                // 尝试转化数据为json
                try { ele_value = JSON.parse(JSON.stringify(ele_value)); isConver = true; }
                catch (e) { isConver = false; }
                // 如果转化成功，递归自身
                if (isConver) { deal_el(ele_value); }
            }
            // 如果数据类型为字符串
            else if (typeof (ele_value) == "string")
            {
                // 准备转换格式节点元素
                let isConver = false;
                // 尝试转化数据为json
                try {
                    // 临时存放对象
                    let obj_mo = JSON.parse(ele_value);
                    // 只有转换过后是对象格式才执行 (因为纯数字字符串会被转换为number型)
                    if (typeof(obj_mo)=='object') { ele_value = obj_mo; isConver = true; }
                }
                catch (e) { isConver = false; }
                // 如果转化成功，递归自身
                if (isConver) { deal_el(ele_value); }
            }
            
            // 最终将节点 覆盖到 原位置
            objC[k] = ele_value;
        }
    };
    
    // ===================== data参数转换
    // 参数数据格式 == 字符串
    if (typeof(data) == "string")
    {
        try {
            // 先转化一次参数数据
            let obj_can = JSON.parse(data);
            // 只有转换过后是对象格式才执行 (因为纯数字字符串会被转换为number型)
            if (typeof(obj_can)=='object') { data_return = obj_can; }
        }
        catch (e) { data_return = null; }
    }
    // 参数数据格式 == 对象，保留原数据
    else if (typeof(data) == "object")
    {
        try { data_return = JSON.parse(JSON.stringify(data)); }
        catch (e) { data_return = null; }
    }
    
    // 如果数据有效，进行节点数据转换处理方法
    if (data_return) { deal_el(data_return); }
    
    // 返回结果数据
    return data_return;
}

export default toObject;